Exempel på concat-funktioner
CONCAT()-funktionen ska inte förväxlas med CONCATENATE-nyckelordet i skriptet.
I sin enklaste form används Concat() för att koppla samman värden/ord/val i en enda sträng. Den kan dock användas på många olika sätt för att hjälpa dig lösa olika problem. Alla exemplen baseras på följande tabell:
Table | MyColumn | Date | Value |
---|---|---|---|
Data | JKL | 01/01/2012 | 11 |
Data1 | WVX | 01/02/2012 | 13 |
Data | GHI | 01/03/2012 | 13 |
Data | ABC | 01/04/2012 | 15 |
Data1 | STU | 01/05/2012 | 18 |
Data1 | PQR | 01/06/2012 | 10 |
Data1 | MNO | 01/07/2012 | 25 |
Data | DEF | 01/08/2012 | 11 |
Enkel strängkonkatenering
Som vi nämnde tidigare kan concat-funktionen användas för att koppla samman värden i en lista. Värdena kan vara hårdkodade eller styras av val eller data.
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
Den här enkla concat-satsen kopplar samman alla möjliga värden från kolumnen MyColumn. Om du väljer att lägga till DISTINCT-nyckelordet Detta säkerställer att varje värde bara visas en gång i strängen:
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
När du använder ett enkelt concat kan du välja att lägga till en sorteringsvikt i funktionen för att ordna strängvärdena efter valfri kolumn. I exemplet nedan läggs datumkolumnen till för att sortera värdena.
=CONCAT(MyColumn, ',', Date)
Resultat: JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF
Concat() inom ett uttryck eller en set-sats
Exempel: Vidarebefordra flera dynamiska värden till ett setanalys-uttryck
Det finns tillfällen då du vill skicka ett dynamiskt val av värden till en set-sats. För att göra detta måste du lägga till enkla citattecken i strängen så att funktionen CONCAT() returnerar exempelvis 'JKL','VWX'. Du kan dock inte använda de enkla citattecknen som de är eftersom de då tolkas när Concat evalueras, i stället för när set-uttrycket evalueras. Använd i stället funktionen Chr():
=CONCAT(Chr(39)&MyColumn&Chr(39),',')
Du kan sedan lägga denna concat-sats så att den hamnar inuti ett uttryck:
=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
I de flesta fall skulle denna teknik användas där det finns dataöar. Den låter dig skicka värden till ett uttryck som inte påverkar någon del av datamodellen eftersom tabellen för dataön inte är kopplad till den.
Concat() i skriptet
Concat kan också användas i skriptet för att omvandla flera rader till ett enda kolumnvärde, precis som med andra aggregeringar.
Med de källdata som användes tidigare blir resultatet av CONCAT i skriptet:
Skriptfunktionen får följande resultat:
Table | CombinedData |
---|---|
Data | ABC,DEF,GHI,JKL |
Data1 | MNO,PQR,STU,WVX |
Använda Rank() för att påverka Concat()
När du använder andra funktioner i kombination med concat() kan du få riktigt avancerade resultat. I detta exempel har Rank() använts för att få tag i de tre bästa resultaten (baserat på värdet) och länka samman dem.
=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
Resultat: ABC,MNO,STU